1
Des jeux de données simples aux réalités chaotiques du monde réel
EvoClass-AI002Leçon 5
00:00

1. Compléter l’écart : Fondamentaux du chargement des données

Les modèles d'apprentissage profond prospèrent sur des données propres et cohérentes, mais les jeux de données du monde réel sont intrinsèquement désordonnés. Nous devons passer des benchmarks prêts à l'emploi (comme MNIST) à la gestion de sources non structurées où le chargement des données est lui-même une tâche complexe d'orchestration. La base de ce processus repose sur les outils spécialisés de PyTorch pour la gestion des données.

Le défi central consiste à transformer les données brutes et dispersées (images, textes, fichiers audio) stockées sur disque en un format PyTorch hautement organisé et standardiséformat Tensorattendu par la GPU. Cela nécessite une logique personnalisée pour l'indexation, le chargement, le prétraitement et enfin, le regroupement en lots.

Principaux défis liés aux données du monde réel

  • Chaos des données :Données réparties dans plusieurs répertoires, souvent indexées uniquement par des fichiers CSV.
  • Prétraitement nécessaire :Les images peuvent nécessiter un redimensionnement, une normalisation ou une augmentation avant d'être converties en tenseurs.
  • Objectif d’efficacité :Les données doivent être livrées à la GPU sous forme de lots optimisés et non bloquants afin de maximiser la vitesse d'entraînement.
La solution de PyTorch : Déconnexion des responsabilités
PyTorch impose une séparation des préoccupations : le Dataset gère le « quoi » (comment accéder à un échantillon et son étiquette), tandis que le DataLoader gère le « comment » (regroupement efficace, mélange et livraison multithreadée).
data_pipeline.py
TERMINALbash — data-env
> Prêt. Cliquez sur « Exécuter » pour lancer.
>
Inspecteur de tenseursEn direct

Exécutez le code pour inspecter les tenseurs actifs
Question 1
Quel est le rôle principal d’un objet PyTorch Dataset ?
Organiser les échantillons en lots miniatures et les mélanger.
Définir la logique pour récupérer un seul échantillon prétraité.
Effectuer la multiplication matricielle à l’intérieur du modèle.
Question 2
Lequel DataLoaderparamètre permet le chargement parallèle des données en utilisant plusieurs cœurs du CPU ?
device_transfer
batch_size
num_workers
async_load
Question 3
Si vos images brutes ont toutes des tailles différentes, quel composant est principalement responsable de les redimensionner vers une dimension uniforme (par exemple, $224 \times 224$) ?
Le collate_fn.
Le processeur d’image dédié de la GPU.
La fonction de transformation appliquée dans la méthode __getitem__ de Dataset.
Défi : Le plan directeur du chargeur d’images personnalisé
Définissez la structure nécessaire pour la classification d’images du monde réel.
Vous construisez un CustomDataset pour 10 000 images indexées par un seul fichier CSV contenant les chemins et les étiquettes.
Étape 1
Quelle méthode obligatoire doit retourner le nombre total d’échantillons ?
Solution :
Le __len__ de Dataset.
Concept : Définit la taille de l'époque.
Étape 2
Quel est l'ordre correct des opérations à l'intérieur de __getitem__(self, index)?
Solution :
1. Cherchez le chemin du fichier en utilisant index.
2. Chargez les données brutes (par exemple, une image).
3. Appliquez les transformations nécessaires transforms.
4. Retournez le tenseur traité et l'étiquette.